GMenuModel *menubar;
gboolean register_session;
+ GtkActionMuxer *muxer;
#ifdef GDK_WINDOWING_X11
guint next_id;
}
static void
-gtk_application_startup (GApplication *application)
+gtk_application_startup (GApplication *g_application)
{
+ GtkApplication *application = GTK_APPLICATION (g_application);
+
G_APPLICATION_CLASS (gtk_application_parent_class)
- ->startup (application);
+ ->startup (g_application);
+
+ application->priv->muxer = gtk_action_muxer_new ();
+ gtk_action_muxer_insert (application->priv->muxer, "app", G_ACTION_GROUP (application));
gtk_init (0, 0);
#ifdef GDK_WINDOWING_X11
- gtk_application_startup_x11 (GTK_APPLICATION (application));
+ gtk_application_startup_x11 (application);
#endif
#ifdef GDK_WINDOWING_QUARTZ
- gtk_application_startup_quartz (GTK_APPLICATION (application));
+ gtk_application_startup_quartz (application);
#endif
}
}
#endif
+
+GtkActionMuxer *
+gtk_application_get_parent_muxer_for_window (GtkWindow *window)
+{
+ GtkApplication *application;
+
+ application = gtk_window_get_application (window);
+
+ if (!application)
+ return NULL;
+
+ return application->priv->muxer;
+}
#include "gtkapplicationwindow.h"
+#include "gtkactionmuxer.h"
+
G_GNUC_INTERNAL
gboolean gtk_application_window_publish (GtkApplicationWindow *window,
GDBusConnection *session,
G_GNUC_INTERNAL
const gchar * gtk_application_get_menubar_object_path (GtkApplication *application);
+G_GNUC_INTERNAL
+GtkActionMuxer * gtk_application_get_parent_muxer_for_window (GtkWindow *window);
+
#endif /* __GTK_APPLICATION_PRIVATE_H__ */
#include "gtkplug.h"
#include "gtktypebuiltins.h"
#include "a11y/gtkwidgetaccessible.h"
+#include "gtkapplicationprivate.h"
/* for the use of round() */
#include "fallback-c89.c"
void
_gtk_widget_update_parent_muxer (GtkWidget *widget)
{
- GtkWidget *parent;
GtkActionMuxer *parent_muxer;
if (widget->priv->muxer == NULL)
return;
- if (GTK_IS_MENU (widget))
- parent = gtk_menu_get_attach_widget (GTK_MENU (widget));
+ if (GTK_IS_WINDOW (widget))
+ {
+ parent_muxer = gtk_application_get_parent_muxer_for_window (GTK_WINDOW (widget));
+ }
else
- parent = gtk_widget_get_parent (widget);
+ {
+ GtkWidget *parent;
+
+ if (GTK_IS_MENU (widget))
+ parent = gtk_menu_get_attach_widget (GTK_MENU (widget));
+ else
+ parent = gtk_widget_get_parent (widget);
- parent_muxer = parent ? _gtk_widget_get_action_muxer (parent) : NULL;
+ parent_muxer = parent ? _gtk_widget_get_action_muxer (parent) : NULL;
+ }
gtk_action_muxer_set_parent (widget->priv->muxer, parent_muxer);
}
gtk_application_add_window (priv->application, window);
}
- /* don't use a normal cast: application may be NULL */
- gtk_widget_insert_action_group (GTK_WIDGET (window), "app", (GActionGroup *) application);
+ _gtk_widget_update_parent_muxer (GTK_WIDGET (window));
g_object_notify (G_OBJECT (window), "application");
}